package com.agileboot.common.core.page;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.Data;

import javax.validation.constraints.Max;

/**
 * 分页查询对象
 * 不继承 AbstractPageQuery，提供更简单的分页功能
 *
 * @author agileboot
 */
@Data
public class PageQuery<T> {

    public static final int MAX_PAGE_NUM = 200;
    public static final int MAX_PAGE_SIZE = 500;

    @Max(MAX_PAGE_NUM)
    protected Integer pageNum = 1;
    @Max(MAX_PAGE_SIZE)
    protected Integer pageSize = 10;
    
    /**
     * 查询参数对象
     */
    private T param;
    
    /**
     * 设置查询参数
     *
     * @param param 查询参数对象
     */
    public void setParam(T param) {
        this.param = param;
    }
    
    /**
     * 获取查询参数
     *
     * @return 查询参数对象
     */
    public T getParam() {
        return this.param;
    }
    
    /**
     * 构建分页对象
     *
     * @param <E> 实体类型
     * @return 分页对象
     */
    public <E> Page<E> buildPage() {
        return toPage();
    }

    /**
     * 转换为 MyBatis Plus 分页对象
     *
     * @param <E> 实体类型
     * @return 分页对象
     */
    public <E> Page<E> toPage() {
        return new Page<>(pageNum, pageSize);
    }
} 